//package com.inspur.edp.bff.designtime.generator.core.rtgen.managergenerator.mgrImplclass.methodgenerators;
//
//import com.inspur.edp.bff.api.attribute.VMDataExtendAttribute;
//import com.inspur.edp.bff.api.attribute.VMRootAttribute;
//import com.inspur.edp.bff.designtime.generator.core.rtgen.managergenerator.mgrImplclass.FSMgrImplGenContext;
//import com.inspur.edp.bff.spi.IHelpMapping;
//import com.inspur.edp.bff.spi.VMHelpConfig;
//import com.inspur.edp.caf.generator.baseInfo.ParameterInfo;
//import com.inspur.edp.caf.generator.baseInfo.TypeInfo;
//import com.inspur.edp.caf.generator.method.ClassMethodGenerator;
//import com.inspur.edp.caf.generator.utils.ExpressionUtils;
//import com.inspur.edp.cef.gencommon.ReflectionUtils;
//import lombok.var;
//import org.eclipse.jdt.core.dom.*;
//import org.springframework.cglib.core.TypeUtils;
//
//import java.util.ArrayList;
//import java.util.Arrays;
//import java.util.HashMap;
//
//public class GetHelpIdGenerator extends ClassMethodGenerator
//{
//	private FSMgrImplGenContext fsMgrImplGenContext;
//	private static final String param_labelId = "labelId";
//	private static final String param_codeName = "codeName";
//
//	public GetHelpIdGenerator(FSMgrImplGenContext fsMgrImplGenContext)
//	{
//		this.fsMgrImplGenContext = fsMgrImplGenContext;
//	}
//
//	@Override
//	protected Block buildMethodBody() {
//		SwitchStatement result = getSwitchSectionSyntaxes();
//
//		var block = ast.newBlock();
//		block.statements().add(result);
//		return block;
//	}
//
//	private SwitchStatement getSwitchSectionSyntaxes()
//	{
//		Class implType = fsMgrImplGenContext.getFSGenContext().getMgrInterfaceAndType().get(0).getImplType();
//
//		VMDataExtendAttribute extendAttrs = (VMDataExtendAttribute)implType.getAnnotation(VMDataExtendAttribute.class);
//
//		Class entityType = extendAttrs.entityDataType();
//		VMRootAttribute rootAttribute = (VMRootAttribute)entityType.getAnnotation(VMRootAttribute.class);
//		Class mappingType = rootAttribute.mappingType();
//
//		IHelpMapping mapping = (IHelpMapping)ReflectionUtils.createInstance(mappingType);
//
//		SwitchStatement switchStatement = ast.newSwitchStatement();
//		InfixExpression infixExpression = ast.newInfixExpression();
//		infixExpression.setLeftOperand(ast.newSimpleName("codeName"));
//		infixExpression.setOperator(InfixExpression.Operator.PLUS);
//		infixExpression.setRightOperand(ast.newSimpleName("labelId"));
//		switchStatement.setExpression(infixExpression);
//
//		HashMap<String, VMHelpConfig> configInfo = mapping.getHelpConfig();
//		for (String key : configInfo.keySet())
//		{
//			SwitchCase caseStatement = ast.newSwitchCase();
//			caseStatement.setExpression(ExpressionUtils.getStringLiteral(ast,key));
//			switchStatement.statements().add(caseStatement);
//
//			ReturnStatement returnStatement = ast.newReturnStatement();
//			returnStatement.setExpression(ExpressionUtils.getStringLiteral(ast, configInfo.get(key).getHelpId()));
//			switchStatement.statements().add(returnStatement);
//
//			//switchStatement.statements().add(ast.newBreakStatement());
//		}
//
//		SwitchCase defaultCase =ast.newSwitchCase();
//		defaultCase.setExpression(null);
//		switchStatement.statements().add(defaultCase);
//		ThrowStatement exceptionStatement = ast.newThrowStatement();
//		ClassInstanceCreation creation = ast.newClassInstanceCreation();
//		creation.setType(new TypeInfo(RuntimeException.class).getType(ast, fsMgrImplGenContext.getFSGenContext().getRootCompileUnitGenCtx()));
//
//		InfixExpression fixExpression = ast.newInfixExpression();
//		fixExpression.setLeftOperand(ExpressionUtils.getStringLiteral(ast,"给定的ElementID:"));
//		fixExpression.setOperator(InfixExpression.Operator.PLUS);
//		fixExpression.setRightOperand(ast.newSimpleName("labelId"));
//		fixExpression.extendedOperands().add(ExpressionUtils.getStringLiteral(ast,"未能找到帮助配置信息"));
//		creation.arguments().add(fixExpression);
//		exceptionStatement.setExpression(creation);
//
//		switchStatement.statements().add(exceptionStatement);
//		return switchStatement;
//	}
//
//	@Override
//	protected ArrayList<Modifier.ModifierKeyword> getAccessModifiers()
//	{
//		return new ArrayList(Arrays.asList(new Modifier.ModifierKeyword[] {
//				Modifier.ModifierKeyword.PROTECTED_KEYWORD}));
//	}
//
//	@Override
//	protected boolean getIsOverride() {
//		return true;
//	}
//
//	@Override
//	protected String getMethodName()
//	{
//		return "getHelpId";
//	}
//
//	@Override
//	protected ArrayList<ParameterInfo> getParameterCollection()
//	{
//		ParameterInfo paramCode = new ParameterInfo();
//		paramCode.setParamType(new TypeInfo(String.class));
//		paramCode.setParamName(param_codeName);
//		ParameterInfo paramLabel = new ParameterInfo();
//		paramLabel.setParamType(new TypeInfo(String.class));
//		paramLabel.setParamName(param_labelId);
//		return new ArrayList(Arrays.asList(
//				new ParameterInfo[] { paramCode, paramLabel }));
//	}
//
//	@Override
//	protected TypeInfo getReturnType(){
//		return new TypeInfo(String.class);
//	}
//}